import logging
import pytest
from Determining_ad.src.Tools.testing_tools import TestingUtils

"""
自动化-OPPO（无平铺功能）
"""


class TestOppoCases1:
    """
    无平铺功能
    """
    # 定义全局变量
    all_df = None
    ad_df = None
    entity = None
    video_df = None
    first_df = None
    second_df = None
    quit_df = None
    quit_second_df = None

    def test_oppo_case_1(self, custom_error):
        """
        无平铺版  第一步
        :return:
        """
        # 判断53是否正确
        TestingUtils.video_event_true(custom_error, '53', self.video_df)

        # 判断第一屏有几个广告位
        TestingUtils.get_ad_sum(custom_error, 5, '01', self.first_df, self.second_df)

        # 判断第一屏广告事件是否正确
        TestingUtils.ad111_event_true(custom_error, '01', self.first_df, self.second_df, 4)

        # 判断第一屏只展示1个广告源
        TestingUtils.img_num_result(custom_error, 1, 'heytapimage', '01', self.first_df, self.second_df)

        # 给错误列表置空，并且报错
        custom_error.errors_nums()

    def test_oppo_case_2(self, custom_error):
        """
        无平铺版  第二步
        :return:
        """

        # 第二屏的广告个数
        TestingUtils.get_ad_sum(custom_error, 5, '02', self.first_df, self.second_df)

        # 判断第二屏广告事件是否正确
        TestingUtils.ad111_event_true(custom_error, '02', self.first_df, self.second_df, 4)

        # 判断第二屏toutiao个数
        TestingUtils.img_num_result(custom_error, 1, 'toutiao', '02', self.first_df, self.second_df)

        # 402自动下载
        TestingUtils.button_event_result(custom_error, '402', '02', df_111=self.first_df)

        # 51激励视频
        TestingUtils.video_event_true(custom_error, '53', self.video_df)

        # 给错误列表置空，并且报错
        custom_error.errors_nums()

    def test_oppo_case_3(self, custom_error):
        """
        无平铺版  第二步
        :return:
        """
        # 第三屏广告正确
        TestingUtils.ad111_event_true(custom_error, '03', self.first_df, self.second_df, 4)

        # 52激励视频
        TestingUtils.video_event_true(custom_error, '52', self.video_df)

        # hide触发apl
        TestingUtils.apl_result(custom_error, self.all_df, self.ad_df, '403', self.entity, '2')
        # logging.info(f"sefl:\n{self.all_df.to_string()}")
        # 给错误列表置空，并且报错
        custom_error.errors_nums()

    def test_oppo_case_4(self, custom_error):
        """
        无平铺版  第四步
        :return:
        """
        # 第四屏广告正确
        TestingUtils.ad111_event_true(custom_error, '04', self.first_df, self.second_df, 4)

        # 退出弹窗正确
        TestingUtils.ad110_event_true(custom_error, self.quit_df, self.quit_second_df)

        # 查apl埋点
        TestingUtils.apl_result(custom_error, self.all_df, self.ad_df, '231', self.entity, '1')

        # 第五屏广告正确
        TestingUtils.ad111_event_true(custom_error, '05', self.first_df, self.second_df, 4)

        # 给错误列表置空，并且报错
        custom_error.errors_nums()

    def test_oppo_case_5(self, custom_error):
        """
        无平铺版  第五步
        :return:
        """
        # onhide限制apl埋点
        TestingUtils.apl_result(custom_error, self.all_df, self.ad_df, '405', self.entity, '3')

        # 退出弹窗正常
        TestingUtils.ad110_event_true(custom_error, self.quit_df, self.quit_second_df)

        # 点击退出弹窗限制apl
        TestingUtils.apl_result(custom_error, self.all_df, self.ad_df, '232', self.entity, '4')

        # 第六屏广告正确
        TestingUtils.ad111_event_true(custom_error, '05', self.first_df, self.second_df, 4)

        # 给错误列表置空，并且报错
        custom_error.errors_nums()


class TestOppoCases2:
    """
    无平铺功能
    """
    # 定义全局变量
    all_df = None
    ad_df = None
    entity = None
    video_df = None
    first_df = None
    second_df = None
    quit_df = None
    quit_second_df = None

    def test_oppo_case_1(self, custom_error):
        # 没有53
        TestingUtils.video_num_result(custom_error, self.video_df, 0, '53')

        # 第一屏是否都正确
        TestingUtils.ad111_event_true(custom_error, '01', self.first_df, self.second_df, 0)

        # 第一屏只有1个广告请求
        TestingUtils.get_ad_sum(custom_error, 1, '01', self.first_df, self.second_df)

        # 判断nofirst情况
        TestingUtils.no_first_ad(custom_error, self.first_df, self.ad_df, self.all_df, '01', 'toutiao', '401')

        # 给错误列表置空，并且报错
        custom_error.errors_nums()

    def test_oppo_case_2(self, custom_error):
        """
        无平铺版  第二步
        :return:
        """
        # 广告402正常
        TestingUtils.ad111_event_true(custom_error, '02', self.first_df, self.second_df, 0)

        # 这个埋点现在好像不报了

        # 给错误列表置空，并且报错
        custom_error.errors_nums()

    def test_oppo_case_3(self, custom_error):
        """
        无平铺版  第三步
        :return:
        """
        # 广告403正常
        TestingUtils.ad111_event_true(custom_error, '03', self.first_df, self.second_df, 0)

        # 退出弹窗是否正常
        TestingUtils.ad110_event_true(custom_error, self.quit_df, self.quit_second_df)

        # 231点击
        TestingUtils.click_event_result(custom_error, '231', '03', self.quit_df)

        # 给错误列表置空，并且报错
        custom_error.errors_nums()


class TestOppoCases3:
    """
    无平铺功能
    """
    # 定义全局变量
    all_df = None
    ad_df = None
    entity = None
    video_df = None
    first_df = None
    second_df = None
    quit_df = None
    quit_second_df = None

    def test_oppo_case_1(self, custom_error):
        """
        无平铺版  第一步
        :return:
        """
        # 判断第一屏有3个广告位
        TestingUtils.get_ad_sum(custom_error, 3, '01', self.first_df, self.second_df)

        # 401点击正常
        TestingUtils.click_event_result(custom_error, '401', '01', self.first_df)

        # 第二屏广告正常
        TestingUtils.ad111_event_true(custom_error, '02', self.first_df, self.second_df, 0)

        # 百度请求成功个数判断
        TestingUtils.bqt_num(custom_error, self.ad_df)

        # 给错误列表置空，并且报错
        custom_error.errors_nums()
